package top.dotgo.kit;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;

/**
 * @author：jornl
 * @date : 2018/11/20 0:21
 * @des:
 */
public class NumberKit {

    private static final String P = "P";
    private static final String PO = "PO";
    private static final String XT = "XT";
    private static final String SD = "SD";
    private static final String YH = "YH";
    private static final String RE = "RE";

    /**
     * 生成唯一编号
     *
     * @param len 长度
     * @return 唯一编号
     */
    private static String baseUniqueGen(int len) {
        return StrUtil.subSuf(IdUtil.fastSimpleUUID(), 32 - len);
    }

    /**
     * 日期格式唯一编号
     *
     * @param prefix 前缀
     * @return 唯一编号
     */
    private static String baseDateGen(String prefix) {
        String str = DateUtil.format(DateUtil.date(), "yyMMddHHmm");
        return prefix + str + RandomUtil.randomInt(1234, 9876);
    }

    /**
     * 生成员工编号
     * 6位
     *
     * @return String
     */
    public static String staffNo() {
        return baseUniqueGen(6);
    }

    /**
     * 支付单单号
     *
     * @return String
     */
    public static String payNo() {
        return baseDateGen(P);
    }

    /**
     * 核销码
     *
     * @return String
     */
    public static String hxNo() {
        return baseUniqueGen(15).toUpperCase();
    }

    /**
     * 用户名
     *
     * @return String
     */
    public static String userName() {
        return baseUniqueGen(8);
    }

    /**
     * snowflakeId
     *
     * @return Long
     */
    public static Long snowflakeId() {
        return IdUtil.createSnowflake(1L, 1L).nextId();
    }
}
